Time-division multiplexing (“TDM”) is a popular technique for transmitting data from multiple input source channels. Using a TDM approach, several slower speed data streams from separate channels are combined into a single high-speed TDM data stream. This is accomplished by separating the data stream from each channel into many discrete segments, each having a very short duration, and assigning segments to the single high-speed TDM data stream in a rotating, repeating sequence. In essence, the segments from each channel are interleaved, with each input channel having access to the entire bandwidth of the high-speed TDM data stream channel during its assigned time interval. A first-in-first-out (FIFO) approach is generally utilized, with buffer storage allowing each individual slower speed data stream to be reassembled into the original data stream. In this way, the composite high-speed TDM data stream channel is able to efficiently transmit data from all of the various input channels.
Based upon the amount of data each channel is transmitting/receiving (i.e. each channel's bandwidth), the TDM cycle is divided up among the various channels, assigning each channel a number of time slots per cycle based on its proportionate bandwidth size. Since each TDM cycle represents a fixed amount of time, the number of time slots assigned to each channel represents the portion of each TDM cycle time interval that each channel may access the high-speed data stream (also referenced as the TDM data stream). So the proportionate size of each channel's bandwidth would typically be used to determine how to divide TDM cycles among a variety of channels. A TDM cycle may be set as any length of time, based on the specific needs of the system. Regardless of the actual length of time of a TDM cycle, each channel would generally receive a proportionate share of the TDM cycle time based on bandwidth size.
Such a TDM cycle approach can be illustrated using a TDM wheel diagram. FIG. 1 shows a typical exemplary TDM wheel diagram with three input source channels. By way of illustrative example, the high-speed TDM data stream for FIG. 1 could be capable of transmitting data at 10 kbps. In keeping with the TDM wheel diagram of FIG. 1, Channel A would transmit 1 kbps, Channel B would transmit 3 kbps, and Channel C would transmit 6 kbps. Thus, Channel A might be assigned 1 time slot, corresponding to 1/10th of the TDM cycle, Channel B might be assigned 3 time slots, corresponding to 3/10ths of the TDM cycle, and Channel C might be assigned 6 time slots, corresponding to 6/10th of the TDM cycle. In this way, the TDM cycle (regardless of length) would be divided among the channels based on the proportionate value of each channel's bandwidth.
So for a 1 second TDM cycle, Channel A would access the high speed data stream for 1/10th of a second, transmitting or receiving 1 kbit of data ( 1/10s*10 kbps=1 kbit); Channel B would access the high speed data stream for 3/10 of a second, transmitting 3 kbits of data ( 3/10 s*10 kbps=3 kbits); and Channel C would access the high speed data stream for 6/10th of a second, transmitting 6 kbits of data ( 6/10 s*10 kbps=6 kbits). If on the other hand the TDM cycle were set as 0.1 seconds in duration, then each of the three channels would still receive the same fractional amount of each TDM cycle, but it would take ten cycles to transmit/receive the same amount of information as a single one second TDM cycle (such that over a given period of time, the same amount of data would be transmitted for each channel). Accordingly, rather than consider the bits transmitted/received by each channel, examples will hereinafter simply reference the number of time slots allocated to each channel per TDM cycle as a way of discussing the proportional allocation of time between channels for accessing the high-speed TDM data stream each TDM cycle.
Generally, the allocation of time slots among the various channels would be proportional to the size of each channel's bandwidth with respect to the total bandwidth all channels desire. Each time slot generally represents an amount of bandwidth equal to some integer multiple of system burst size. Generally, to keep the required TDM data buffers (for the first-in-first-out approach) to a minimum, it is desirable to set the burst size as small as possible. Accordingly, the burst size tends to be set to the smallest burst that allows stall-free access to the high-speed data stream (for example, the system memory), basically allowing the high-speed data stream to run at peak bandwidth. In addition, TDM cycle length is generally minimized in order to reduce the size of the FIFO buffers (thereby reducing cost).
So in the example of FIG. 1, Channel A's bandwidth would be equal to the system's burst size, such that Channel A's standard desired allocation would be one time slot. Channel B's bandwidth would be three times that of Channel A, while Channel C's bandwidth would be six times that of Channel A. Thus, Channel A would desire and be allocated one time slot per TDM cycle, Channel B would desire and be allocated three time slots per cycle, and Channel C would desire and be allocated six time slots per cycle. Each cycle, one time slot of the high-speed TDM data stream would carry a segment from Channel A, followed by three time slots carrying a segment of Channel B's data, and six time slots carrying a segment of Channel C's data. In other words, each cycle around the TDM wheel, Channel A's data transmission (via the high-speed TDM data stream) would be followed by Channel B which would be followed by Channel C, and Channel C's transmission/reception time would last twice as long as that of Channel B, which would last three times as long as Channel A's. The TDM cycle repeats, thus interleaving the data streams from the three input source channels based on this cyclical time allocation procedure.
TDM cycles are often used to allocate bandwidth for telephone and internet transmissions, but they may be used any time multiple, slower speed channels are combined for transmission/reception using a single high-speed TDM data stream. The specific technique disclosed below would also typically apply when multiple sources seek to access memory. For example, the disclosed embodiments operating in a Digital Micromirror Device (“DMD”) might allow multiple components of the DMD system to access the system memory. In this situation, the TDM cycle would allocate memory access based upon the same sort of rotating, repeating time sequence as described above. It should also be noted that any reference to a channel transmitting data (or a data transmission) is intended to broadly refer to transmitting/receiving (transmission/reception); channels may read and/or write data within a TDM approach.
Conventional TDM cycles operate fairly effectively when each of the input source channels desire an integer number of time slots (as when each channel's bandwidth is an integer multiple of the system's burst size, for example). When the input source channels are not all integer multiples, however, conventional TDM cycle allocation tends to become inefficient. In these circumstances, an improved TDM cycle allocation technique is needed so that fractional elements can be efficiently allocated. After all, bandwidth is a valuable commodity, determining the cost of a system and the speed of access available, and so it should be efficiently utilized.